Skip to content

Design + plan: per-thread read-only reach into another project (#109) - #119

Merged
currentbits merged 8 commits into
mainfrom
coder/cross-project-spawns-a-thread-can-start--c056ca
Aug 16, 2026
Merged

currentbits merged 8 commits into
mainfrom
coder/cross-project-spawns-a-thread-can-start--c056ca

Conversation

@currentbits

Copy link
Copy Markdown
Owner

Design and implementation plan for the half of #109 that PR #111 deferred: letting a thread read another project's checkout ("go look at how project X does this") without ever writing there. Docs only — no code changes in this PR.

Why this shape

The obvious assumption for a feature like this is that there is a sandbox to open. There is not, and that reframed the design:

  • Solenta passes no sandbox or approval flags to any provider.
  • grok, kimi and opencode all run tools unprompted in headless mode (electron/providers.js:275, :393, :475 — each documented in the file's own comments). They can already read and write any repo on this disk.
  • codex is confined only by its own default sandbox, which Solenta never overrides.
  • claude is the only provider with a permission channel (--permission-prompt-tool stdio, routed to the UI at electron/runner.js:1667), so it is the only one where an out-of-cwd read costs a click per file.

So this feature grants no capability that is not already there. What it adds is the agent being told which other checkouts exist and that they are read-only, and — on claude — reads under those roots not stopping the run. --add-dir is deliberately not used anywhere: it makes a directory a full workspace dir, which grants writes.

What the design specifies

  • readProjectIds — a per-thread opt-in list, set from a "Read access" submenu in the existing thread overflow menu. Forks inherit it, like permissionMode.
  • readRootsFor — resolves ids to on-disk roots, dropping deleted and remote-host projects at read time rather than by migration.
  • A [Read access] sentence in the prompt note every dispatch already carries, naming each root. Ungated; the existing [Thread] sentence keeps its coder-threads gate.
  • autoAllowRead — on claude, auto-answers allow for Read/Grep/Glob/NotebookRead whose paths resolve under a root. Edit, Write, Bash and anything unrecognised still prompt, so a write into another repo remains a decision the user is shown and makes.
  • Nothing else moves. Diff, commit, PR, worktree and sidebar stay keyed on the owning project, because writes still only land there.

Known ceiling

On grok, kimi and opencode "read-only" is a sentence in the prompt and nothing more — those CLIs have no permission channel to enforce it. Stated in the spec and marked with a ponytail: comment, same as the existing assertSameProject ceiling from #111.

Files

  • docs/superpowers/specs/2026-08-16-cross-project-read-reach-design.md
  • docs/superpowers/plans/2026-08-16-cross-project-read-reach.md — 6 TDD tasks with the failing test written out for each

Implementation has not started; merging this locks the approach, not the code.

  • PR created by the Claude Code agent

Willem and others added 8 commits August 16, 2026 16:14
… Update-check failures are invisible — unhandled rejection, s
… Desktop-notification preference: global toggle and per-threa
… Composer is hard-disabled during runs — allow type-ahead / q
… Synchronous git on the main-process event loop with no defau
… Web-server port conflict silently kills app boot — no window
… Merge conflicts auto-abort and surface raw git stderr — no r
Second half of #109: the read-only "go look at how X does this" case the
spawn-guard PR deferred. Per-thread opt-in list of readable projects, a
read-roots sentence in the dispatched prompt, and a claude auto-allow for
read-shaped tools under those roots. Writes stay in the owning project.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Six tasks: pure path/tool policy helper, readProjectIds field + setter +
root resolution, read-roots sentence in the dispatch note, claude
auto-allow, Read access submenu, full-suite gate.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@currentbits
currentbits merged commit 8ed543e into main Aug 16, 2026
1 check failed
@currentbits
currentbits deleted the coder/cross-project-spawns-a-thread-can-start--c056ca branch October 3, 2026 16:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant